﻿<!DOCTYPE HTML>
<!-- saved from url=(0059)http://172.13.19.31:6060/note_html/web/http/2-HTTP报文.html -->
<!DOCTYPE html PUBLIC "" ""><HTML><HEAD><META content="IE=11.0000" 
http-equiv="X-UA-Compatible">
 
<META http-equiv="Content-Type" content="text/html; charset=UTF-8"> 
<TITLE>HTTP报文</TITLE> <LINK href="HTTP报文_files/standalone.css" rel="stylesheet"> 
<LINK href="HTTP报文_files/overlay-apple.css" rel="stylesheet"> <LINK href="HTTP报文_files/article_edit.css" 
rel="stylesheet"> 
<STYLE type="text/css">
	#content{
		margin: 5px 10px;
	}
</STYLE>
	 <!-- 代码高亮 -->	 <LINK href="HTTP报文_files/shCoreEclipse.css" rel="stylesheet">
	 <LINK href="HTTP报文_files/my-highlighter.css" rel="stylesheet"> 
<META name="GENERATOR" content="MSHTML 11.00.10586.545"></HEAD> 
<BODY>
<DIV id="content">
<H1 align="center">HTTP报文</H1>
<P align="right" 
style="margin: 0px 10px 0px 0px; padding: 0px;">最后修改时间：2016-07-06 22:31:58</P>
<HR style="border-width: 2px; border-color: lime;">

<P 
style="text-indent: 0.8cm;">HTTP报文是面向文本的，报文中的每一个字段都是一些ASCII码串，各个字段的长度是不确定的。HTTP有两类报文：请求报文和响应报文。</P>
<H3>HTTP请求报文</H3>
<P style="text-indent: 0.8cm;">一个HTTP请求报文由<SPAN 
style="color: rgb(255, 0, 0);">请求行（request line）</SPAN>、<SPAN style="color: rgb(255, 0, 0);">请求头部（header）</SPAN>、<SPAN 
style="color: rgb(255, 0, 0);">空行</SPAN>和<SPAN 
style="color: rgb(255, 0, 0);">请求数据</SPAN>4个部分组成，下图给出了请求报文的一般格式。 </P>
<DIV class="fileImgDiv">
<DIV id="apple"><IMG class="fileImg" alt="图片不存在" src="HTTP报文_files/20150325-01.png" 
rel="#20150325-01"> <FONT>请求报文的一般格式</FONT> </DIV>
<DIV class="apple_overlay" id="20150325-01"><IMG alt="图片不存在" src="HTTP报文_files/20150325-01.png"> 
</DIV></DIV>
<HR>

<H4 style="text-indent: 0.8cm;">请求行Request-Line</H4>
<P style="text-indent: 0.8cm;">Request-Line 始于方法符号，接收是 Request-URI 和协议版本，由 CRLF 
结束。元素间用 SP 字符分隔。除了最终的 CRLF 序列，不允许 CR 或 LF。<SPAN 
style="color: rgb(255, 0, 0);">Request-Line = Method SP Request-URI SP 
HTTP-Version CRLF</SPAN>。例如，GET /index.html HTTP/1.1。 GET就是Method </P>
<UL>
  <LI>Method 符号指出在由 Request-URI 标识的资源上所执行的方法。方法是大小写敏感的。</LI>
  <LI>Request-URI是统一资源标识符 ，标识应用到请求上的资源。Request-URI = "*" | absoluteURI | 
  abs_path | authority</LI>
  <LI>HTTP-Version，目前常用的版本为HTTP-1.1</LI></UL>
<UL></UL>
<H4 style="text-indent: 0.8cm;">请求头部（header）</H4>
<P style="text-indent: 0.8cm;"><SPAN 
style="color: rgb(255, 0, 0);">请求头部由关键字/值对组成，每行一对，关键字和值用英文冒号“:”分隔。</SPAN> 
equest-header 域名能够靠与协议版本修改一起扩展。然而，当通迅中所有成员都认识这些 request-header 域时， 【可以】为 
request-header 域的语义给出新的或实验性头部域。不认识的头部域将作为 entity-header 域对待。 </P>
<H4 style="text-indent: 0.8cm;">空行</H4>
<P style="text-indent: 0.8cm;"><SPAN 
style="color: rgb(255, 0, 0);">最后一个请求头之后是一个空行，发送回车符和换行符，通知服务器以下不再有请求头。</SPAN></P>
<H4 style="text-indent: 0.8cm;">请求数据</H4>
<P style="text-indent: 0.8cm;"><SPAN 
style="color: rgb(255, 0, 0);">请求数据不在GET方法中使用，而是在POST方法中使用。</SPAN>POST方法适用于需要客户填写表单的场合。与请求数据相关的最常使用的请求头是Content-Type和Content-Length。</P>
<H3>HTTP响应报文</H3>
<P style="text-indent: 0.8cm;">HTTP响应也由三个部分组成，分别是：<SPAN style="color: rgb(255, 0, 0);">状态行</SPAN>、<SPAN 
style="color: rgb(255, 0, 0);">消息报头</SPAN>、<SPAN 
style="color: rgb(255, 0, 0);">响应正文</SPAN>。 </P>
<H4 style="text-indent: 0.8cm;">状态行</H4>
<P style="text-indent: 0.8cm;">Request 消息的首行是 
Status-Line，由协议版本，接着数字状态码和相关的文本短语组成，每个元素间由 SP 字符分隔。除了最后的 CRLF 序列，不允许 CR 或 
LF。<SPAN style="color: rgb(255, 0, 0);">Status-Line = HTTP-Version SP 
Status-Code SP Reason-Phrase CRLF </SPAN></P>
<P 
style="text-indent: 0.8cm;">其中，HTTP-Version表示服务器HTTP协议的版本；Status-Code表示服务器发回的响应状态代码；Reason-Phrase表示状态代码的文本描述。状态代码由三位数字组成，第一个数字定义了响应的类别，且有五种可能取值。<SPAN 
style="color: rgb(255, 0, 0);">HTTP 状态码可扩展。</SPAN></P>
<UL>
  <LI style="list-style: inherit !important;">1xx：指示信息--表示请求已接收，继续处理。</LI>
  <LI style="list-style: inherit !important;">2xx：成功--表示请求已被成功接收、理解、接受。</LI>
  <LI style="list-style: inherit !important;">3xx：重定向--要完成请求必须进行更进一步的操作。</LI>
  <LI style="list-style: inherit !important;">4xx：客户端错误--请求有语法错误或请求无法实现。</LI>
  <LI style="list-style: inherit !important;">5xx：服务器端错误--服务器未能实现合法的请求。</LI></UL>
<P style="text-indent: 0.8cm;">常见状态代码、状态描述的说明如下</P>
<UL>
  <LI style="list-style: inherit !important;">200 OK：客户端请求成功。</LI>
  <LI style="list-style: inherit !important;">400 Bad 
  Request：客户端请求有语法错误，不能被服务器所理解。</LI>
  <LI style="list-style: inherit !important;">401 
  Unauthorized：请求未经授权，这个状态代码必须和WWW-Authenticate报头域一起使用。</LI>
  <LI style="list-style: inherit !important;">403 
  Forbidden：服务器收到请求，但是拒绝提供服务。</LI>
  <LI style="list-style: inherit !important;">404 Not 
  Found：请求资源不存在，举个例子：输入了错误的URL。</LI>
  <LI style="list-style: inherit !important;">500 Internal Server 
  Error：服务器发生不可预期的错误。</LI>
  <LI style="list-style: inherit !important;">503 Server 
  Unavailable：服务器当前不能处理客户端的请求，一段时间后可能恢复正常，举个例子：HTTP/1.1 200 OK（CRLF）。</LI></UL>
<H4 style="text-indent: 0.8cm;">完整的状态码</H4>
<TABLE class="reference notranslate">
  <TBODY>
  <TR>
    <TH align="left" style="width: 10%;">代码</TH>
    <TH align="left" style="width: 30%;">消息</TH>
    <TH align="left" style="width: 60%;">描述</TH></TR>
  <TR>
    <TD valign="top">100</TD>
    <TD> Continue</TD>
    <TD valign="top">只有请求的一部分已经被服务器接收，但只要它没有被拒绝，客户端应继续该请求。</TD></TR>
  <TR>
    <TD valign="top">101</TD>
    <TD> Switching Protocols</TD>
    <TD valign="top">服务器切换协议。</TD></TR>
  <TR>
    <TD valign="top">200</TD>
    <TD> OK</TD>
    <TD valign="top">请求成功。</TD></TR>
  <TR>
    <TD valign="top">201</TD>
    <TD> Created</TD>
    <TD valign="top">该请求是完整的，并创建一个新的资源。</TD></TR>
  <TR>
    <TD valign="top">202</TD>
    <TD> Accepted</TD>
    <TD valign="top">该请求被接受处理，但是该处理是不完整的。</TD></TR>
  <TR>
    <TD valign="top">203</TD>
    <TD> Non-authoritative Information</TD>
    <TD valign="top">&nbsp;</TD></TR>
  <TR>
    <TD valign="top">204 </TD>
    <TD>No Content</TD>
    <TD valign="top">&nbsp; </TD></TR>
  <TR>
    <TD valign="top">205</TD>
    <TD> Reset Content</TD>
    <TD valign="top">&nbsp;</TD></TR>
  <TR>
    <TD valign="top">206</TD>
    <TD> Partial Content</TD>
    <TD valign="top">&nbsp; </TD></TR>
  <TR>
    <TD valign="top">300</TD>
    <TD> Multiple Choices</TD>
    <TD valign="top">链接列表。用户可以选择一个链接，进入到该位置。最多五个地址。</TD></TR>
  <TR>
    <TD valign="top">301</TD>
    <TD> Moved Permanently</TD>
    <TD valign="top">所请求的页面已经转移到一个新的 URL。</TD></TR>
  <TR>
    <TD valign="top">302</TD>
    <TD> Found</TD>
    <TD valign="top">所请求的页面已经临时转移到一个新的 URL。 </TD></TR>
  <TR>
    <TD valign="top">303</TD>
    <TD> See Other</TD>
    <TD valign="top">所请求的页面可以在另一个不同的 URL 下被找到。 </TD></TR>
  <TR>
    <TD valign="top">304</TD>
    <TD> Not Modified</TD>
    <TD valign="top">&nbsp;</TD></TR>
  <TR>
    <TD valign="top">305</TD>
    <TD> Use Proxy</TD>
    <TD valign="top">&nbsp; </TD></TR>
  <TR>
    <TD valign="top">306</TD>
    <TD><I>Unused</I></TD>
    <TD valign="top">在以前的版本中使用该代码。现在已不再使用它，但代码仍被保留。</TD></TR>
  <TR>
    <TD valign="top">307</TD>
    <TD> Temporary Redirect</TD>
    <TD valign="top">所请求的页面已经临时转移到一个新的 URL。</TD></TR>
  <TR>
    <TD valign="top">400</TD>
    <TD>Bad Request</TD>
    <TD valign="top">服务器不理解请求。</TD></TR>
  <TR>
    <TD valign="top">401</TD>
    <TD> Unauthorized</TD>
    <TD valign="top">所请求的页面需要用户名和密码。</TD></TR>
  <TR>
    <TD valign="top">402</TD>
    <TD> Payment Required</TD>
    <TD valign="top"><I>您还不能使用该代码。</I> </TD></TR>
  <TR>
    <TD valign="top">403</TD>
    <TD> Forbidden</TD>
    <TD valign="top">禁止访问所请求的页面。</TD></TR>
  <TR>
    <TD valign="top">404</TD>
    <TD> Not Found</TD>
    <TD valign="top">服务器无法找到所请求的页面。.</TD></TR>
  <TR>
    <TD valign="top">405</TD>
    <TD> Method Not Allowed</TD>
    <TD valign="top">在请求中指定的方法是不允许的。</TD></TR>
  <TR>
    <TD valign="top">406</TD>
    <TD> Not Acceptable</TD>
    <TD valign="top">服务器只生成一个不被客户端接受的响应。</TD></TR>
  <TR>
    <TD valign="top">407 </TD>
    <TD>Proxy Authentication Required</TD>
    <TD valign="top">在请求送达之前，您必须使用代理服务器的验证。</TD></TR>
  <TR>
    <TD valign="top">408</TD>
    <TD> Request Timeout</TD>
    <TD valign="top">请求需要的时间比服务器能够等待的时间长，超时。</TD></TR>
  <TR>
    <TD valign="top">409</TD>
    <TD> Conflict</TD>
    <TD valign="top">请求因为冲突无法完成。</TD></TR>
  <TR>
    <TD valign="top">410 </TD>
    <TD>Gone</TD>
    <TD valign="top">所请求的页面不再可用。</TD></TR>
  <TR>
    <TD valign="top">411</TD>
    <TD> Length Required</TD>
    <TD valign="top">"Content-Length" 未定义。服务器无法处理客户端发送的不带 Content-Length 
    的请求信息。</TD></TR>
  <TR>
    <TD valign="top">412</TD>
    <TD> Precondition Failed</TD>
    <TD valign="top">请求中给出的先决条件被服务器评估为 false。</TD></TR>
  <TR>
    <TD valign="top">413</TD>
    <TD> Request Entity Too Large</TD>
    <TD valign="top">服务器不接受该请求，因为请求实体过大。</TD></TR>
  <TR>
    <TD valign="top">414</TD>
    <TD> Request-url Too Long</TD>
    <TD valign="top">服务器不接受该请求，因为 URL 太长。当您转换一个 "post" 请求为一个带有长的查询信息的 "get" 
      请求时发生。</TD></TR>
  <TR>
    <TD valign="top">415</TD>
    <TD> Unsupported Media Type</TD>
    <TD valign="top">服务器不接受该请求，因为媒体类型不被支持。</TD></TR>
  <TR>
    <TD valign="top">417</TD>
    <TD> Expectation Failed</TD>
    <TD valign="top">&nbsp;</TD></TR>
  <TR>
    <TD valign="top">500</TD>
    <TD>Internal Server Error</TD>
    <TD valign="top">未完成的请求。服务器遇到了一个意外的情况。</TD></TR>
  <TR>
    <TD valign="top">501</TD>
    <TD> Not Implemented</TD>
    <TD valign="top">未完成的请求。服务器不支持所需的功能。</TD></TR>
  <TR>
    <TD valign="top">502</TD>
    <TD> Bad Gateway</TD>
    <TD valign="top">未完成的请求。服务器从上游服务器收到无效响应。</TD></TR>
  <TR>
    <TD valign="top">503</TD>
    <TD> Service Unavailable</TD>
    <TD valign="top">未完成的请求。服务器暂时超载或死机。</TD></TR>
  <TR>
    <TD valign="top">504</TD>
    <TD> Gateway Timeout</TD>
    <TD valign="top">网关超时。</TD></TR>
  <TR>
    <TD valign="top">505</TD>
    <TD> HTTP Version Not Supported</TD>
    <TD valign="top">服务器不支持"HTTP协议"版本。</TD></TR></TBODY></TABLE>
<H4 style="text-indent: 0.8cm;">response-header响应头</H4>
<P style="text-indent: 0.8cm;">response-heder 域允许服务器传递不能放在 Status-Line 
中的关于响应的额外信息。这些头部域给出关于服务器和关于对 Request-URI 所标识资源的以后访问 </P>
<HR style="border-width: 2px; border-color: lime;">

<DIV align="center">©copyright 版权所有   作者：zzy</DIV>
<SCRIPT src="../../pub/syntaxhighlighter/scripts/shCore.js" type="text/javascript"></SCRIPT>
 
<SCRIPT src="../../pub/syntaxhighlighter/scripts/shBrushJava.js" type="text/javascript"></SCRIPT>
	
<SCRIPT src="../../pub/syntaxhighlighter/scripts/shBrushJScript.js" type="text/javascript"></SCRIPT>
 
<SCRIPT src="../../pub/syntaxhighlighter/scripts/shBrushXml.js" type="text/javascript"></SCRIPT>
 
<SCRIPT src="../../pub/syntaxhighlighter/scripts/shBrushSql.js" type="text/javascript"></SCRIPT>
 
<SCRIPT src="../../pub/syntaxhighlighter/scripts/shBrushBash.js" type="text/javascript"></SCRIPT>
	
<SCRIPT src="../../pub/syntaxhighlighter/scripts/shBrushVb.js" type="text/javascript"></SCRIPT>
	
<SCRIPT src="../../pub/syntaxhighlighter/scripts/shBrushCss.js" type="text/javascript"></SCRIPT>
	
<SCRIPT src="../../pub/syntaxhighlighter/init.js" type="text/javascript"></SCRIPT>
 
<SCRIPT src="../../pub/js/jquery.tools.min.js" type="text/javascript"></SCRIPT>
 <!-- make all links with the 'rel' attribute open overlays --> 
<SCRIPT>
  $(function() {
      $("#apple img[rel]").overlay({effect: 'apple'});
    });
</SCRIPT>
 </DIV></BODY></HTML>
